package com.lkd.service;

import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lkd.entity.TaskEntity;
import com.lkd.http.vo.CancelTaskViewModel;
import com.lkd.http.vo.TaskViewModel;
import com.lkd.vo.Pager;

import java.util.List;

/**
 * 工单业务逻辑
 */
public interface TaskService extends IService<TaskEntity> {


    /**
     * 通过条件搜索工单列表
     *
     * @param pageIndex
     * @param pageSize
     * @param innerCode
     * @param userId
     * @param taskCode
     * @param isRepair  是否是运维工单
     * @return
     */
    Pager<TaskEntity> search(Long pageIndex, Long pageSize, String innerCode, Integer userId, String taskCode, Integer status, Boolean isRepair, String start, String end);


    /**
     * 创建工单
     *
     * @param taskViewModel
     * @return
     */
    boolean create(TaskViewModel taskViewModel);

    /**
     * 获取工单详情
     *
     * @param taskId
     * @return
     */
    TaskEntity taskInfo(Long taskId);

    /**
     * 接收工单
     *
     * @param id
     * @return
     */
    Boolean accept(Long id);

    /**
     * 取消工单
     *
     * @param id
     * @param viewModel
     * @return
     */
    Boolean cancelTask(Long id, CancelTaskViewModel viewModel);

    /**
     * 完成工单
     *
     * @param id
     * @return
     */
    Boolean completeTask(Long id);

    /**
     * 查询指定时间范围内的工单列表
     *
     * @param begin
     * @param end
     * @return
     */
    List<TaskEntity> getUserTask(DateTime begin, DateTime end);
}
